'''
什么是装饰器？你用过哪些装饰器（自定义的装饰器，python定义好的装饰器）
装饰器的目的：允许你动态地修改函数，是python中的高级功能
装饰器本质上是一个函数，它接受一个函数作为参数，并返回一个新的函数。
这个新函数通常会在执行原函数之前或之后添加一些额外的功能或行为。

装饰器的应用场景：
日志记录: 装饰器可用于记录函数的调用信息、参数和返回值。
性能分析: 可以使用装饰器来测量函数的执行时间。
权限控制: 装饰器可用于限制对某些函数的访问权限。
缓存: 装饰器可用于实现函数结果的缓存，以提高性能。
'''
# 记录执行时长
import time

def jilu1():
    # 记录一个时间
    t1 = time.time()
    print(t1)  # 1755499503.1204972s 时间戳 从1970.1.1 0：0：0开始，到现在的秒数

    sum = 0
    for i in range(1,100000):
        sum += i

    # 记录一个时间
    t2 = time.time()
    print(t2)
    # 获取时间差，时间差 就是执行时间，即这段代码的性能、
    print(f"执行时长：{t2-t1}")

def jilu2():
    # 记录一个时间
    t1 = time.time()
    print(t1)  # 1755499503.1204972s 时间戳 从1970.1.1 0：0：0开始，到现在的秒数

    # 这是一段代码
    time.sleep(2)

    # 记录一个时间
    t2 = time.time()
    print(t2)
    # 获取时间差，时间差 就是执行时间，即这段代码的性能、
    print(f"执行时长：{t2 - t1}")
# jilu1()
# jilu2()

# 装饰器本身就是一个函数 参数：需要判断性能的函数
def timecode1(funt):
    # 内置函数，目的是为了修改参数函数
    def newfuntion(*args,**keys):
        # 函数执行前的内容
        t1 = time.time()

        # 调用函数（执行函数）
        r = funt(*args,**keys)

        # 函数执行后的内容
        t2 = time.time()
        print(f"{funt.__name__}执行时长：{t2 - t1}")
        return r
    return newfuntion

@timecode1  # 使用装饰器
def jisuan(n):
    sum = 0
    for i in range(1, n):
        sum += i


def jisuan1(n,m):
    sum = 0
    for i in range(n, m):
        sum += i

jisuan(100000)

jisuan1(1,100000)